[pascal]产生1-40之间不重复的随机数

来源:百度知道 编辑:UC知道 时间:2024/05/10 02:49:32
要求产生1-40之间的随机数,包括1和40,注意是不能重复!用PASCAL做

我采用的是用随机函数random的办法,加上一些修饰。 随机函数randdom(x)的作用是随机取0~x-1中的数。
var a:array[1..40]of integer;
i,j,k,s:integer;
begin
i:=0;
repeat
k:=random(41); s:=0;
if k<>0 then
begin
if i<>0 then
begin
for j:=1 to i do
if a[j]<>k then inc(s);
end;
if s=i then begin
inc(i); a[i]:=k; end;
end;
until i=40;
end.
此过程结束后既产生了40个随机不重复的数存放在数组a中。

Program example;
Const
n=10;
Var
a:array[1..n] of integer;
i,x,temp:integer;
Function find(x:integer):boolean;
var
i:integer;
begin
find:=false;
for i:=1 to n do
if a[i]=x then begin find:=true;exit;end;
end;
Procedure writea;
var
i:integer;
begin
for i:=1 to n do
write(a[i],' ');
writeln;
end;
Procedure selectsort;
var
i,j,k:integer;